/**
 * 修改状态信息
 * @param taskId
 * @param status
 */
function updateJobTask(taskId, status, key) {
    $.ajax({
            type: "post",
            url: kettle + "/jobTask/editJobTask",
            dataType: "json",
            data: {
                id: taskId,
                status: status
            },
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                if (1 == status) {
                    $.messager.show({title: '系统提示', msg: "启用作业任务成功"});
                } else {
                    $.messager.show({title: '系统提示', msg: "禁用作业任务成功"});
                }
                if (!isNull(key)) {
                    $("#dg" + key).datagrid("load");
                } else {
                    $("#dg").datagrid("load");
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );


}

/**
 *  查看明细任务
 */
function getTaskDetail(taskId) {
    $('#myformDetail').form('disableValidation');//清除验证样式
    $('#dlgDetail').dialog({
        title: "作业任务明细信息"
    }).dialog('open');
    $("#task_id").val(taskId);
    $('#dgDetail').datagrid({
        loadMsg: '数据加载中，请稍后...',
        url: kettle + '/jobTaskDetails/listInfo',
        //pagination: true,
        singleSelect: false,//如果为true，则只允许选择一行。
        //title: "作业任务列表",
        //pageSize: pageSize,
        // pageList: pageList,
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        queryParams: {
            taskId: taskId
        },
        columns: [[
            {field: 'itemid', title: 'Order ID', width: 80, checkbox: true},
            {field: 'taskId', title: '分类ID', hidden: 'true'},
           /* {
                field: 'sequence', title: '操作', formatter: function (value, row, index) {
                    var rows = $('#dgDetail').datagrid('getRows').length;
                    if (0 == index) {
                        return "<a href='javascript:void(0)' onclick='moveDownDatagrid(&apos;" + '#dgDetail' + "&apos;,&apos;" + index + "&apos;)'>下移</a>";
                    } else if (index == rows - 1) {
                        return "<a href='javascript:void(0)' onclick='moveUpDatagrid(&apos;" + '#dgDetail' + "&apos;,&apos;" + index + "&apos;)'>上移</a>";
                    } else {
                        return "<a href='javascript:void(0)' onclick='moveUpDatagrid(&apos;" + '#dgDetail' + "&apos;,&apos;" + index + "&apos;)'>上移</a>"
                            + "&nbsp;|&nbsp;<a href='javascript:void(0)' onclick='moveDownDatagrid(&apos;" + '#dgDetail' + "&apos;,&apos;" + index + "&apos;)'>下移</a>";
                    }
                }
            },*/
            {field: 'inputDataName', title: '输入数据库'},
            {field: 'outputDataName', title: '输出数据库'},
            {field: 'inputSql', title: '输入语句', width: 80},
            {field: 'outputTable', title: '输出表名'},
            {
                field: 'ftype', title: '类型', formatter: function (value, row, index) {
                    if (1 == value) {
                        return "输入输出";
                    }
                    if (2 == value) {
                        return "执行SQL";
                    }
                    if (3 == value) {
                        return "读取DBF";
                    }
                    if (4 == value) {
                        return "读取EXECL";
                    }
                }
            },
            {field: 'description', title: '说明', width: 80},
            {
                field: 'status', title: '状态', formatter: function (value, row, index) {
                    if (1 == value) {
                        return "<a href='javascript:void(0)' onclick='updateJobTaskDetail(&apos;" + row['id'] + "&apos;,&apos;" + 2 + "&apos;)'>启用</a>";
                    } else {
                        return "<a href='javascript:void(0)' onclick='updateJobTaskDetail(&apos;" + row['id'] + "&apos;,&apos;" + 1 + "&apos;)'>禁用</a>";
                    }
                }
            }
        ]],
        loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        },
        onLoadSuccess: function () {
        },
        //双击事件
        onDblClickRow: function (rowIndex, rowData) {
            viewDetail(rowData)
        }
    }).datagrid("columnMoving");;
}

//选择类型
function comboboxTypeChanage() {
    $('#ftype').combobox({
        onChange: function (n, o) {
            if ("1" == n || "3" == n || "4" == n) { //输入输出 读取DBF  读取EXECL
                // 输入数据库
                $("#inputDataIdTr").show();
                $('#inputDataId').combobox({
                    required: true
                });
                $('#inputDataId').combobox('selectedIndex', 0); //选中第一个
                // 输出数据库
                $("#outputDataIdTr").show();
                $('#outputDataId').combobox({
                    required: true
                });
                $('#outputDataId').combobox('selectedIndex', 0); //选中第一个
                $("#outputTableTr").show();
                $('#outputTable').val("");
                $('#outputTable').validatebox({
                    required: true
                });
                if ("3" == n || "4" == n) {
                    $("#inputSqlText").text("输入文件名称：");
                    $('#inputSql').textbox({
                        required: true,
                        missingMessage: "请输入文件名称正则表达式！"
                    });
                } else {
                    $("#inputSqlText").text("输入语句：");
                    $('#inputSql').textbox({
                        required: true,
                        missingMessage: "请输入输入语句！"
                    });
                }

                $("#inputDataText").text("输入数据库：");
            } else {
                // 输入数据库
                $("#inputDataIdTr").show();
                $('#inputDataId').combobox({
                    required: true
                });
                $('#inputDataId').combobox('selectedIndex', 0); //选中第一个
                // 输出数据库
                $("#outputDataIdTr").hide();
                $('#outputDataId').combobox({
                    required: false
                });
                $("#outputTableTr").hide();
                $('#outputTable').validatebox({
                    required: false
                });
                $("#inputDataText").text("数据库：");
                $("#inputSqlText").text("输入语句：");
                $('#inputSql').textbox({
                    required: true,
                    missingMessage: "请输入输入语句！"
                });
            }
        }
    });
}

/**
 * 修明细任务改状态信息
 * @param taskId
 * @param status
 */
function updateJobTaskDetail(taskDetailId, status) {
    $.ajax({
            type: "post",
            url: kettle + "/jobTaskDetails/editJobTaskDetails",
            dataType: "json",
            data: {
                id: taskDetailId,
                status: status
            },
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                if (1 == status) {
                    $.messager.show({title: '系统提示', msg: "启用作业明细任务成功"});
                } else {
                    $.messager.show({title: '系统提示', msg: "禁用作业明细任务成功"});
                }
                $("#dgDetail").datagrid("load");
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );


}


function viewDetail(rowData) {
    $('#myformDetail').form('disableValidation');//清除验证样式
    $('#dlgDetailInfo').dialog({
        title: "查看作业明细信息",
        buttons: [{
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlgDetailInfo').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#myformDetail').form('load', rowData);//页面赋值
}

/**
 * 添加明细任务
 */
function addJobTaskDetailInfo() {
    $("#myformDetail").form('clear');//添加之前清空表达信息
    $('#myformDetail').form('enableValidation');//设置验证样式
    $('#dlgDetailInfo').dialog({
        title: "新增作业明细信息",
        buttons: [
            {
                text: '保存',
                iconCls: 'icon-save',
                handler: function () {
                    saveItemJobTaskDetail(1);
                }
            }, {
                text: '返回',
                iconCls: 'icon-back',
                handler: function () {
                    $('#dlgDetailInfo').dialog('close');
                }
            }
        ]
    }).dialog('open');
    $('#statusDetail').combobox('selectedIndex', 0); //选中第一个
    $('#ftype').combobox('selectedIndex', 0); //选中第一个
    $('#inputDataId').combobox('selectedIndex', 0); //选中第一个
    $('#outputDataId').combobox('selectedIndex', 0); //选中第一个
    $("#taskId").val($("#task_id").val());
    var rows = $('#dgDetail').datagrid('getRows').length;
    $("#taskDetailSequence").val(rows + 1);
}


/**
 * 修改明细任务
 */
function editJobTaskDetailInfo() {
    $('#myformDetail').form('enableValidation');//设置验证样式
    var arr = $('#dgDetail').datagrid('getSelections');
    if (null == arr || arr.length != 1) {
        $.messager.alert('系统提示', "请选择一行数据！", 'warning');
        return;
    }
    $('#dlgDetailInfo').dialog({
        title: "修改作业明细信息",
        buttons: [
            {
                text: '保存',
                iconCls: 'icon-save',
                handler: function () {
                    saveItemJobTaskDetail(2);
                }
            }, {
                text: '返回',
                iconCls: 'icon-back',
                handler: function () {
                    $('#dlgDetailInfo').dialog('close');
                }
            }
        ]
    }).dialog('open');
    $('#myformDetail').form('load', arr[0]);//页面赋值
}


/**
 * 保存明细任务的方法
 */
function saveItemJobTaskDetail(ftype) {
    //验证表单信息验证表单信息
    if (!$("#myformDetail").form('validate')) { //
        return;
    }
    var url = kettle + "/jobTaskDetails/editJobTaskDetails";
    if (1 == ftype) {
        url = kettle + "/jobTaskDetails/addJobTaskDetails";
    }
    $.messager.confirm('系统提示', "确定保存作业明细信息吗？", function (parm) {
        if (!parm) {
            return;
        }
        $('#myformDetail').form('submit', {
            url: url,
            onSubmit: function () {
                $.messager.progress({text: '正在处理中...',});
            }, success: function (data) {
                $.messager.progress('close');
                try {
                    data = JSON.parse(data);
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    //关闭弹出窗口
                    $('#dlgDetailInfo').dialog('close');
                    $.messager.show({title: '系统提示', msg: data.message});
                    $("#dgDetail").datagrid("load");//刷新表格
                } catch (e) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        });
    });
}


/**
 * 删除作业任务信息方法
 */
function delJobTaskDetailInfo() {
    var arr = $('#dgDetail').datagrid('getSelections');
    if (null == arr || arr.length == 0) {
        $.messager.alert('系统提示', "请选择你要删除的数据！", 'warning');
        return;
    }
    $.messager.confirm('系统提示', '确定要删除这' + arr.length + '条作业明细信息吗？', function (param) {
        if (!param) {
            return;
        }
        var ids = [];
        for (var i = 0; i < arr.length; i++) {
            ids.push(arr[i].id);
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: kettle + "/jobTaskDetails/delJobTaskDetails",
                dataType: "json",
                data: {
                    ids: JSON.stringify(ids)
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $("#dgDetail").datagrid("load");//刷新表格
                    $.messager.show({title: '系统提示', msg: data.message});
                }
                ,
                error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        )
        ;
    });
}

var paramList;

//执行的弹出页面
function getExecuteJobTaskInfo(ids) {
    //获取参数信息表的数据
    $("#paramTable").empty();
    $.ajax({
            type: "post",
            url: kettle + "/jobParam/listAllInfo",
            dataType: "json",
            data: {},
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                paramList = data.data;
                if (isNull(paramList) || paramList.length == 0) { // 没有参数直接执行
                    doExecuteJobTask(ids);
                    return;
                }
                addDlgExecuteJobTask(ids);
                var html = '<table cellpadding="2px" cellspacing="0" class="form-table">';
                for (var key in paramList) {
                    var param = paramList[key];
                    var required = param.required; //是否必填

                    if (1 == param.ftype && 4 == param.datatype) { //空白日期类型
                        html += '<tr><td align="right">' + param.chineseName + '：</td>' +
                            ' <td align="left"><input style="width:150px" class="easyui-datebox" id="' + param.keyName + '" editable="false"' +
                            ' value="true"' +
                            ' data-options="required:' + (1 == required ? 'true' : 'false') + ',showSeconds:false,panelHeight:' + "'auto'" + '"' +
                            (1 == required ? 'missingMessage="请输入"' + param.chineseName : '') +
                            '></td></tr>';
                    }
                    if (1 == param.ftype && 1 == param.datatype && 1== required) { //空白字符串类型
                        html += '<tr><td align="right">' + param.chineseName + '：</td>' +
                            ' <td align="left"><input style="width:150px" class="easyui-validatebox" id="' + param.keyName + '"' +
                            ' data-options="required:' + (1 == required ? 'true' : 'false') + '"' +
                            (1 == required ? 'missingMessage="请输入' + param.chineseName + '"' : '') +
                            '></td></tr>';
                    }
                    if (3 == param.ftype) { //SQL类型
                        html += '<tr><td align="right">' + param.chineseName + '：</td>' +
                            ' <td align="left"><input style="height:150px;width:450px" class="easyui-textbox" id="' + param.keyName + '"' +
                            ' data-options="required:' + (1 == required ? 'true' : 'false') + '"' +
                            (1 == required ? 'missingMessage="请输入' + param.chineseName + '"' : '') +
                            '></td></tr>';
                    }
                }
                html += '</table>'
                $("#paramTable").append(html);
                $.parser.parse('#dlgExecuteJobTask');//重新渲染页面，解决样式不生效
            },
            error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}


function addDlgExecuteJobTask(ids) {
    $('#dlgExecuteJobTask').dialog({
        title: "采集参数信息",
        buttons: [
            {
                text: '确定',
                iconCls: 'icon-save',
                handler: function () {
                    doExecuteJobTask(ids);
                }
            }, {
                text: '返回',
                iconCls: 'icon-back',
                handler: function () {
                    $('#dlgExecuteJobTask').dialog('close');
                }
            }
        ]
    }).dialog('open');
}

/**
 * 获取参数信息返回
 */
function doExecuteJobTask(ids) {
    //验证表单信息
    if (!$("#myformExecuteJobTask").form('validate')) { //验证表单信息
        return;
    }
    if (isNull(ids) || ids.length <= 0) {
        $.messager.alert('系统提示', "请选择你要执行任务的数据！", 'warning');
        return;
    }
    $.messager.progress({text: '正在执行中...',});
    var input = $("#paramTable").find("input");
    var data = [];
    for (var i in input) {
        for (var key in paramList) {
            var param = paramList[key];
            if (param.keyName == input[i].id) {
                var obj = new Object();
                obj.defaultValue = input[i].value;
                obj.keyName = input[i].id;
                obj.ftype = param.ftype;
                obj.datatype = param.datatype;
                data.push(obj);
                break;
            }
        }
    }
    $.ajax({
            type: "post",
            url: kettle + "/jobExecute/executeJobTask",
            dataType: "json",
            data: {
                ids: JSON.stringify(ids),
                param: JSON.stringify(data)
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                $.messager.show({title: '系统提示', msg: data.message});
                $('#dlgExecuteJobTask').dialog('close');
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}


/**
 * 获取任务执行日志
 */
function getJobRecord(jobId, ftype) {
    $.ajax({
            type: "post",
            url: kettle + "/jobRecord/getJobRecord",
            dataType: "json",
            data: {
                jobId: jobId,
                selFtype: ftype
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                if (isNull(data.data) || isNull(data.data.logFile)) {
                    $.messager.alert('系统提示', "没有获取到日志信息！", 'warning');
                    return;
                }
                $('#dlgExecuteJobRecord').dialog({
                    title: "采集日志信息",
                    buttons: [{
                        text: '返回',
                        iconCls: 'icon-back',
                        handler: function () {
                            $('#dlgExecuteJobRecord').dialog('close');
                        }
                    }
                    ]
                }).dialog('open');
                $("#jobRecord").textbox('setValue', data.data.logFile);
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}
